package com.naiterui.ehp.bs.b2c.cart.repository;

import java.util.List;

import org.springframework.stereotype.Repository;

import com.naiterui.common.repository.core.BaseJpaRepository;
import com.naiterui.ehp.bs.b2c.cart.entity.CartItem;

/**
 * 购物车
 *
 * @author guoyongxiang
 * @date 2019-05-15 11:38
 * @since 1.0.0
 */
@Repository
public interface CartItemRepository extends BaseJpaRepository<CartItem, Long> {

    /**
     * 查询购物车列表
     *
     * @param userId
     *
     * @return
     */
    List<CartItem> findAllByUserIdOrderByIdDesc(Long userId);

    /**
     * 查询购物车列表
     *
     * @param userId
     * @param recomId
     *
     * @return
     */
    List<CartItem> findAllByUserIdAndRecomId(Long userId, Long recomId);

    /**
     * 根据勾选状态查询购物车列表
     *
     * @param userId
     * @param status
     *
     * @return
     */
    List<CartItem> findAllByUserIdAndSelected(Long userId, Integer status);

    /**
     * 查询指定商品是否已加入购物车
     *
     * @param userId
     * @param productId
     * @param skuId
     * @param recomId
     *
     * @return
     */
    CartItem findAllByUserIdAndProductIdAndSkuIdAndRecomId(Long userId, Long productId, Long skuId, Long recomId);

    /**
     * 查询指定处方ID在购物车记录
     * @param recomId
     * @return
     */
    List<CartItem> findByRecomId(Long recomId);

    /**
     * 清理购物车某个处方
     * @param recomId
     */
    Long deleteByRecomId(Long recomId);

    /**
     * 清理某个用户的购物车
     * @param userId
     * @return
     */
    Long removeByUserId(Long userId);
}
